Forward error correction is an abstract but vital field to today's communications. Much if not most of today's communications, including voice telecommunications, is transmitted as digital data. Forward error correction facilitates data communication by detecting and correcting data errors introduced during transmission. The underlying principle of all forward error correction is to add sufficient redundant data to detect and correct one or more errors over a predetermined amount of data. Forward error correction codes must therefore have sufficient redundant data to be useful, but not so much as to significantly slow the data transmission.
Before the data is transmitted, encoders add correction codes according to the selected encoding method, forming a "codeword" comprising a plurality of characters or symbols. For example, a codeword comprising eight binary characters ("symbols") has eight "1's" or "0's" to convey the information data and the correction code (redundant) data.
Each character in the resulting codeword is modulated into a signal and transmitted. A demodulator receives the transmitted signal and decides what character the signal represents. Due to problems in transmission (fading and the like), a demodulator may not be able to make a definite decision whether an unclear signal represents one character or another. The demodulator makes a guess of the character and delivers the character (a "hard" symbol) to the decoder, as is known in the art. The demodulator produces a hard symbol, which belongs to the finite set of symbols that can be produced by the encoder. In addition, the demodulator produces a reliability (or "soft") value for that symbol, indicating the confidence level.
The designs of many forward error correction decoders are based on the assumption that the data received was received clearly. Thus, many decoders operate on hard data only. Such decoders have the advantage of low complexity. By not exploiting soft data, however, they perform relatively poorly, especially in fading channels, typical of wireless communications. A decoder that exploits soft data can significantly improve the receiver's performance. The biggest potential problem is the increase in complexity.
Receiver performance is reflected in the percentage of received data blocks that are rejected by the receiver. In certain applications, where some delay is tolerable, rejected data blocks can be replaced by requesting retransmission by the transmitter. Time intensive applications must either attempt to use the soft data or attempt to work around discarded data blocks.
The most time intensive application for data transmission is digitally encoded speech. In speech applications, the quality of the received signal is directly related to the accuracy of the data received over a given time period. Dropped data blocks cause signal distortion, missing syllables and gaps in the speech. Therefore, recovering soft data is important in time sensitive data transmissions, such as digitally encoded speech.
One decoder that takes advantage of soft data is an "errors and erasures" decoder. This decoder repeatedly decodes a soft data block, where the least reliable characters are changed. The best answer among the ones obtained by the repeated decoding is selected according to appropriate criteria. The complexity of an errors and erasures technique increases with the number of iterations of decoding. The time required for the number of iterations and the complexity of the calculations necessary for an errors and erasures decoder generally precludes using this type of decoder in time-intensive data transmission, such as voice.
Therefore, there is a need in the art for a decoder that can use both hard and soft information for time intensive applications.